// 微任务

//回调队列中的任务称为[宏任务] 宏任务执行的过程中可能会临时加一些额外的需求 可选择作为一个新的宏任务进到队列中排队
//目前绝大部分异步调用都是作为宏任务执行
//微任务 ： Promise / MutationObserver /process.nextTick

console.log('global start');

//此处setTimeout为宏任务 会再次回到队列中排队
setTimeout(() => {
    console.log('setTimeout');
}, 0)

//作为当前任务的微任务 直接在当前任务结束过后立即执行  提高整体的响应能力
//Promise的回调还会作为微任务执行
Promise.resolve()
    .then(() => {
        console.log('promise');
    })
    .then(() => {
        console.log('promise 2');
    })
    .then(() => {
        console.log('promise 3');
    })

console.log('global end');